# coding=utf-8

import web

import settings
import utils
import controllers.admin.partners.models as models
from controllers.admin.administrators import auth_login
from controllers.admin.partners.forms import partner_form

render = settings.RENDER

class Index(object):
    """
    合作方管理
    """
    @auth_login
    def GET(self):
        # 获取参数
        ipt = web.input(page = '0', q = '')
        # 获取当前页码
        page = utils.intval(ipt.page)
        # 读取记录集
        r = models.partner_search(ipt.q, page, 15)
        # 渲染模式
        if ipt.get('mode', '') == 'lite':
            return self.render_lite(r, page, ipt.q)
        else:
            return self.render(r, page, ipt.q)

    def render(self, result, page, q):
        """
        渲染完整模式
        """
        pager = utils.Pager(result.totals, pageindex = page)
        return render.admin.partners.index(result, pager)


    def render_lite(self, result, page, q):
        """
        渲染精简模式
        """
        # 创建分页器
        pager = utils.Pager(result.totals, pageindex = page
                        , first = False, last = False
                        , link = '<a class="page-numbers" href="?mode=lite&page=%(page)s">%(text)s</a>&nbsp;'
                        , current = '<span class="page-numbers current">%(text)s</span>&nbsp;'
                        , next = '<a class="next page-numbers" href="?mode=lite&page=%(page)s">%(text)s</a>'
                        , prev = '<a class="prev page-numbers" href="?mode=lite&page=%(page)s">%(text)s</a>&nbsp;'
                        , nexttext = '»'
                        , prevtext = '«')


        return render.admin.partners.index_lite(result.result
                    , pager, q
                    , utils.get_media_url)

class Add(object):
    """
    合作方添加
    """
    @auth_login
    def GET(self, id = '0'):
        # 获取显示模式
        ipt = web.input()
        f = partner_form()
        # 是否编辑模式
        id = utils.intval(id)
        if id > 0:
            # 读取要修改的记录
            p = models.get_partner(id)
            if p:
                # 表单赋值
                f.logo.value = p.logo
                f.name.value = p.name
                f.domain.value = p.domain
                f.spread_url.value = p.spread_url
                f.sort.value = str(p.sort)
                f.submit.attrs['html'] = u'修改：%s' % p.name
        else:
            f.spread_url.value = '%(url)s'

        if ipt.get('mode', '') == 'lite':
            # 精简模式
            return self.render_lite(f)
        else:
            # 完整模式
            return self.render(f)

    @auth_login
    def POST(self, id = '0'):
        # 保存
        ipt = web.input()
        if ipt.get('mode', '') == 'lite':
            # 精简模式
            return self.render_post_lite(id)
        else:
            # 完整模式
            return self.render_post(id)

    def render_post(self, id):
        """
        渲染完整模式（POST）
        """
        f = partner_form()
        if not f.validates():
            return render.admin.partners.add(f)
        else:
            id = utils.intval(id)
            if id > 0:
                # 修改
                models.update_partner(id, f.name.value
                        , f.domain.value
                        , f.spread_url.value
                        , utils.intval(f.logo.value)
                        , utils.intval(f.sort.value))
            else:
                # 新增
                models.add_partner(f.name.value
                        , f.domain.value
                        , f.spread_url.value
                        , utils.intval(f.logo.value)
                        , utils.intval(f.sort.value))

            # 跳转到管理页
            raise web.seeother('/partner')

    def render_post_lite(self, id):
        """
        渲染精简模式（POST）
        """
        f = partner_form()
        if not f.validates():
            return render.admin.partners.add_lite(f)
        else:
            id = utils.intval(id)
            if id > 0:
                # 修改
                models.update_partner(id, f.name.value
                        , f.domain.value
                        , f.spread_url.value)
            else:
                # 新增
                models.add_partner(f.name.value
                        , f.domain.value
                        , f.spread_url.value)

            # 跳转到管理页
            raise web.seeother('/partner?mode=lite')

    def render_lite(self, f):
        """
        渲染精简模式
        """
        return render.admin.partners.add_lite(f)

    def render(self, f):
        """
        渲染完整模式
        """
        return render.admin.partners.add(f)
